package cn.stylefeng.guns.modular.web.entity;

import cn.hutool.core.util.IdUtil;
import cn.stylefeng.guns.base.auth.context.LoginContextHolder;
import cn.stylefeng.guns.base.auth.model.LoginUser;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 描述：用户金币变动记录表
 * 作者：chenhuiyan
 * 时间：2020-04-15
 */
@Data
@TableName("pl_user_gold_log")
public class UserGoldLog implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId(value = "id")
    private String id;

    /**
     * 用户编号
     */
    @TableField(value = "user_id")
    private String userId;

    /**
     * 存钱打卡计划编号
     */
    @TableField(value = "sm_plan_id")
    private String smPlanId;

    /**
     * 魔盒编号
     */
    @TableField(value = "magic_box_id")
    private String magicBoxId;

    /**
     * 变动值
     */
    @TableField(value = "change_num")
    private BigDecimal changeNum;

    /**
     * 变动前
     */
    @TableField(value = "before_num")
    private BigDecimal beforeNum;

    /**
     * 变动后
     */
    @TableField(value = "after_num")
    private BigDecimal afterNum;

    /**
     * 变动类型（0增加，1减少）
     */
    @TableField(value = "change_type")
    private Integer changeType;

    /**
     * 变动分类（0打卡奖励，1兑换魔盒，2系统修改）
     */
    private Integer type;

    /**
     * 修改原因
     */
    private String reson;

    /**
     * 创建者
     */
    @TableField(value = "create_by")
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_date")
    private Date createDate;

    /**
     * 添加数据时调用该方法生成
     */
    public void preInsert(){
        LoginUser loginUser = LoginContextHolder.getContext().getUser();
        this.setId(IdUtil.simpleUUID());
        this.setCreateDate(new Date());
        if(loginUser != null){
            this.setCreateBy(loginUser.getId() + "");
        }
    }

}
